# 06 类

class Person():
    # 实例变量: 类似与java类中用public static修饰的成员变量
    address = '中国'
    # 私有实例变量: 类似与java类中用private static修饰的成员变量
    __firm = 'Nba'

    def __init__(self, name, age, sex):
        """
        实例初始化方法: 类似于java的有参构造
        """
        self.name = name
        # 私有属性
        self.__age = age
        self.__sex = sex

    @classmethod
    def get_class_method(cls):
        """
        类方法,至少有一个class参数
        """
        return cls.__firm

    @staticmethod
    def get_static_method():
        """
        静态方法
        """
        return 'Nba'

    def get_age(self):
        """
        实例方法
        """
        return self.__age

    def _get_sex(self):
        """
        私有方法,以_开头,类似于java的private
        """
        return self.__sex

    def __str__(self):
        """
        类似于java的toString()方法
        """
        return '姓名：%s,年龄：%d,性别：%s' % (self.name, self.__age, '男' if self.__sex else '女')


p = Person('张三', 18, True)
print(p.name)
print(p.get_age())
print(p)
print(p.address)
print(Person.get_static_method())
print(Person.get_class_method())
